{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.8.3"
    },
    "colab": {
      "name": "Modelling.ipynb",
      "provenance": [],
      "toc_visible": true,
      "include_colab_link": true
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/shubhigupta991/Reddit-Flair-Detection/blob/main/scripts/Modelling.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "LO7mMSXXCORM"
      },
      "source": [
        "## Showing Data"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "SyfNb57OVBHl"
      },
      "source": [
        "import pandas as pd\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import seaborn as sns"
      ],
      "execution_count": 1,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 717
        },
        "id": "tCY-RcAMCJQX",
        "outputId": "a52c111d-9ec6-4b55-dfd4-cf9479f7aa64"
      },
      "source": [
        "data = pd.read_csv(\"drive/MyDrive/data.csv\")\n",
        "data.head()"
      ],
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>title</th>\n",
              "      <th>id</th>\n",
              "      <th>score</th>\n",
              "      <th>url</th>\n",
              "      <th>num_of_comments</th>\n",
              "      <th>body</th>\n",
              "      <th>author</th>\n",
              "      <th>comments</th>\n",
              "      <th>flair</th>\n",
              "      <th>timestamp</th>\n",
              "      <th>combined_features</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>gelatine available</td>\n",
              "      <td>jk9zlt</td>\n",
              "      <td>0</td>\n",
              "      <td>https://www.reddit.com/r/india/comments/jk9zlt...</td>\n",
              "      <td>4</td>\n",
              "      <td>wish buy gelatine looking cheapest local price...</td>\n",
              "      <td>csstudentG</td>\n",
              "      <td>available regular kirana stores usually kept r...</td>\n",
              "      <td>AskIndia</td>\n",
              "      <td>2020-10-29 21:26:38</td>\n",
              "      <td>gelatine availableavailable regular kirana sto...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>trevor noah jokes indo pak tensions seriousnes...</td>\n",
              "      <td>gv9lmh</td>\n",
              "      <td>37</td>\n",
              "      <td>https://www.reddit.com/r/india/comments/gv9lmh...</td>\n",
              "      <td>29</td>\n",
              "      <td>really watch much trevor noah late night show ...</td>\n",
              "      <td>CommYouNitty</td>\n",
              "      <td>mostly country really matter lives pretty chea...</td>\n",
              "      <td>AskIndia</td>\n",
              "      <td>2020-06-02 23:42:24</td>\n",
              "      <td>trevor noah jokes indo pak tensions seriousnes...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>buying used bs4 scooty april 1 issues registra...</td>\n",
              "      <td>hpqq5o</td>\n",
              "      <td>11</td>\n",
              "      <td>https://www.reddit.com/r/india/comments/hpqq5o...</td>\n",
              "      <td>7</td>\n",
              "      <td>know right place ask askindia asking saw artic...</td>\n",
              "      <td>akza07</td>\n",
              "      <td>scammers keep scamming applies new vehicles bu...</td>\n",
              "      <td>AskIndia</td>\n",
              "      <td>2020-07-12 15:58:15</td>\n",
              "      <td>buying used bs4 scooty april 1 issues registra...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>need feedback insurance policy took x post ask...</td>\n",
              "      <td>1s57oi</td>\n",
              "      <td>1</td>\n",
              "      <td>https://www.reddit.com/r/india/comments/1s57oi...</td>\n",
              "      <td>1</td>\n",
              "      <td>posting lack activity r askindia hello last ye...</td>\n",
              "      <td>dhavalcoholic</td>\n",
              "      <td>dear policy holder dhavalcoholic request help ...</td>\n",
              "      <td>AskIndia</td>\n",
              "      <td>2013-12-05 14:30:23</td>\n",
              "      <td>need feedback insurance policy took x post ask...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>could suggest good dramedies</td>\n",
              "      <td>h7t0r2</td>\n",
              "      <td>5</td>\n",
              "      <td>https://www.reddit.com/r/india/comments/h7t0r2...</td>\n",
              "      <td>4</td>\n",
              "      <td>r askindia restricted posting sure ask hope gu...</td>\n",
              "      <td>dont_mess_with_tx</td>\n",
              "      <td>vicky donor jolly llb angoor comedy guide dram...</td>\n",
              "      <td>AskIndia</td>\n",
              "      <td>2020-06-13 04:58:52</td>\n",
              "      <td>could suggest good dramediesvicky donor jolly ...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                               title  ...                                  combined_features\n",
              "0                                 gelatine available  ...  gelatine availableavailable regular kirana sto...\n",
              "1  trevor noah jokes indo pak tensions seriousnes...  ...  trevor noah jokes indo pak tensions seriousnes...\n",
              "2  buying used bs4 scooty april 1 issues registra...  ...  buying used bs4 scooty april 1 issues registra...\n",
              "3  need feedback insurance policy took x post ask...  ...  need feedback insurance policy took x post ask...\n",
              "4                       could suggest good dramedies  ...  could suggest good dramediesvicky donor jolly ...\n",
              "\n",
              "[5 rows x 11 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 2
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "21s_lj57VBHn"
      },
      "source": [
        "data.fillna(\"None\",inplace = True)"
      ],
      "execution_count": 3,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "PQ4r08DzVBHn",
        "outputId": "e795c440-7ea8-43f1-879a-9e7000848907"
      },
      "source": [
        "data.isna().sum()"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "title                0\n",
              "id                   0\n",
              "score                0\n",
              "url                  0\n",
              "num_of_comments      0\n",
              "body                 0\n",
              "author               0\n",
              "comments             0\n",
              "flair                0\n",
              "timestamp            0\n",
              "combined_features    0\n",
              "dtype: int64"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 4
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Sq7PnlhKVBHn"
      },
      "source": [
        "## Data Preprocessing and Model Fitting"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "WOEGj1RwVBHo"
      },
      "source": [
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.pipeline import Pipeline\n",
        "from sklearn.feature_extraction.text import TfidfTransformer\n",
        "from sklearn.feature_extraction.text import CountVectorizer\n",
        "from sklearn.linear_model import SGDClassifier\n",
        "from sklearn.ensemble import RandomForestClassifier\n",
        "from sklearn.neighbors import KNeighborsClassifier\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "from xgboost import XGBClassifier"
      ],
      "execution_count": 5,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Bjwi9kevVBHo"
      },
      "source": [
        "def fit_and_score(models,X_train,y_train,X_test,y_test) :\n",
        "    '''\n",
        "    Fits and evaluate given machine learning model.\n",
        "    \n",
        "    Parameters:-\n",
        "    models = Take a dictionary of models to fit and evaluate.\n",
        "    X_train = Training data without labels.\n",
        "    y_train = Training labels.\n",
        "    X_test = Test data without labels.\n",
        "    y_test = Test labels\n",
        "    '''\n",
        "    \n",
        "    np.random.seed(21)\n",
        "    model_scores = {}\n",
        "    for model_name, model in models.items() :\n",
        "        model = Pipeline([('vect', CountVectorizer()),\n",
        "                  ('tfidf', TfidfTransformer()),\n",
        "                  (model_name, model)])\n",
        "        print(f'Fitting {model_name} .....')\n",
        "        model.fit(X_train,y_train)\n",
        "        print(f'Evaluating {model_name} .....')\n",
        "        model_scores[model_name] = model.score(X_test,y_test)\n",
        "        \n",
        "    return model_scores"
      ],
      "execution_count": 6,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "nieKGJs3cQPO"
      },
      "source": [
        "models = {'LogisticRegression' : LogisticRegression(),\n",
        "          'Linear_svm' : SGDClassifier(),\n",
        "          'KNN': KNeighborsClassifier(),\n",
        "          'RandomForestClassifier' : RandomForestClassifier(),\n",
        "          'XGBClassifier' : XGBClassifier()}"
      ],
      "execution_count": 7,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "WBj6GzwAaWVb"
      },
      "source": [
        "features = {'combined_features' : data['combined_features'],\n",
        "'comments' : data['comments'],\n",
        "'title' : data['title'],\n",
        "'body' : data['body'],\n",
        "'url' : data['url']}   \n",
        "\n",
        "cat = data['flair']"
      ],
      "execution_count": 8,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "dpUsKqMZcVeW",
        "outputId": "39fb9e2e-7295-4ebb-c8e9-c5516ee47545"
      },
      "source": [
        "scores = {}\n",
        "\n",
        "for feature in features:\n",
        "\n",
        "  X_train,X_test,y_train,y_test = train_test_split(features[feature],cat,test_size=0.2, random_state = 21)\n",
        "  print(f'Flair Detection using {feature} as Feature')\n",
        "  model_scores = fit_and_score(models,X_train,y_train,X_test,y_test)\n",
        "\n",
        "  scores[feature] =  model_scores"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Flair Detection using combined_features as Feature\n",
            "Fitting LogisticRegression .....\n",
            "Evaluating LogisticRegression .....\n",
            "Fitting Linear_svm .....\n",
            "Evaluating Linear_svm .....\n",
            "Fitting KNN .....\n",
            "Evaluating KNN .....\n",
            "Fitting RandomForestClassifier .....\n",
            "Evaluating RandomForestClassifier .....\n",
            "Fitting XGBClassifier .....\n",
            "Evaluating XGBClassifier .....\n",
            "Flair Detection using comments as Feature\n",
            "Fitting LogisticRegression .....\n",
            "Evaluating LogisticRegression .....\n",
            "Fitting Linear_svm .....\n",
            "Evaluating Linear_svm .....\n",
            "Fitting KNN .....\n",
            "Evaluating KNN .....\n",
            "Fitting RandomForestClassifier .....\n",
            "Evaluating RandomForestClassifier .....\n",
            "Fitting XGBClassifier .....\n",
            "Evaluating XGBClassifier .....\n",
            "Flair Detection using title as Feature\n",
            "Fitting LogisticRegression .....\n",
            "Evaluating LogisticRegression .....\n",
            "Fitting Linear_svm .....\n",
            "Evaluating Linear_svm .....\n",
            "Fitting KNN .....\n",
            "Evaluating KNN .....\n",
            "Fitting RandomForestClassifier .....\n",
            "Evaluating RandomForestClassifier .....\n",
            "Fitting XGBClassifier .....\n",
            "Evaluating XGBClassifier .....\n",
            "Flair Detection using body as Feature\n",
            "Fitting LogisticRegression .....\n",
            "Evaluating LogisticRegression .....\n",
            "Fitting Linear_svm .....\n",
            "Evaluating Linear_svm .....\n",
            "Fitting KNN .....\n",
            "Evaluating KNN .....\n",
            "Fitting RandomForestClassifier .....\n",
            "Evaluating RandomForestClassifier .....\n",
            "Fitting XGBClassifier .....\n",
            "Evaluating XGBClassifier .....\n",
            "Flair Detection using url as Feature\n",
            "Fitting LogisticRegression .....\n",
            "Evaluating LogisticRegression .....\n",
            "Fitting Linear_svm .....\n",
            "Evaluating Linear_svm .....\n",
            "Fitting KNN .....\n",
            "Evaluating KNN .....\n",
            "Fitting RandomForestClassifier .....\n",
            "Evaluating RandomForestClassifier .....\n",
            "Fitting XGBClassifier .....\n",
            "Evaluating XGBClassifier .....\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "sjcHOBi0gaIU",
        "outputId": "a0e03f21-3607-4bcf-b3ff-0fb2ac5883a8"
      },
      "source": [
        "scores"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "{'body': {'KNN': 0.28688524590163933,\n",
              "  'Linear_svm': 0.3360655737704918,\n",
              "  'LogisticRegression': 0.30327868852459017,\n",
              "  'RandomForestClassifier': 0.3975409836065574,\n",
              "  'XGBClassifier': 0.4180327868852459},\n",
              " 'combined_features': {'KNN': 0.5204918032786885,\n",
              "  'Linear_svm': 0.7581967213114754,\n",
              "  'LogisticRegression': 0.7336065573770492,\n",
              "  'RandomForestClassifier': 0.7663934426229508,\n",
              "  'XGBClassifier': 0.8565573770491803},\n",
              " 'comments': {'KNN': 0.3442622950819672,\n",
              "  'Linear_svm': 0.44672131147540983,\n",
              "  'LogisticRegression': 0.4385245901639344,\n",
              "  'RandomForestClassifier': 0.4016393442622951,\n",
              "  'XGBClassifier': 0.4139344262295082},\n",
              " 'title': {'KNN': 0.5327868852459017,\n",
              "  'Linear_svm': 0.6557377049180327,\n",
              "  'LogisticRegression': 0.6926229508196722,\n",
              "  'RandomForestClassifier': 0.7090163934426229,\n",
              "  'XGBClassifier': 0.6639344262295082},\n",
              " 'url': {'KNN': 0.21311475409836064,\n",
              "  'Linear_svm': 0.319672131147541,\n",
              "  'LogisticRegression': 0.30327868852459017,\n",
              "  'RandomForestClassifier': 0.2581967213114754,\n",
              "  'XGBClassifier': 0.28688524590163933}}"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 10
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "GCUunMFYj3ee",
        "outputId": "7b8d0266-32ea-40ae-d2e9-44107253aec2"
      },
      "source": [
        "for feature,score in scores.items():\n",
        "  model_compare = pd.DataFrame(score,index = ['accuracy'])\n",
        "  model_compare.T.plot.bar(title=feature.upper())"
      ],
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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Sbz85S/Pp5uIBuuphA4kmb8EuXcRzdZzCT0iIl6cnmpDbzf+xB8M6fM9cPpK29R9hS1atIhVV+3p2x9RK0OdT16MlZ2DUkPvYL/99mPbbbflda97HTNmzADghz/8Idtssw2TJ09mjz32AODpp5/miCOOYKuttmLSpElcfvnlAKy11lpLnuuyyy7j8MMPB+Dwww/n/e9/PzvssAMnnHACv/zlL9lpp52YMmUKO++8M/fccw8AL7zwAh/96EfZcsstmTRpEmeddRY/+clP2G+/pbvCXX311bzjHe8YjtsRESNEqogdnHfeeWywwQY888wzbLfdduy7774cc8wxXH/99UyYMIHHHy/2Ej7ttNNYd911uf322wFYsKB9f+TlzZs3j1/84heMGjWKJ598khtuuIFVV12Va665hk984hNcfvnlzJgxgwceeIDbbruNVVddlccff5z111+fD3zgA8yfP58xY8bwjW98gyOPPHKl3oeIGFmS0Dv4yle+whVXXAHAQw89xIwZM9htt92WDAfcYINix7NrrrmGiy9eurXj+uuvP+hzH3DAAYwaNQqAJ554gsMOO4x7770XSSxcuHDJ877//e9f0iTT93rvfe97ufDCCzniiCO48cYbOf/884foJ46IOkhCb3PddddxzTXXcOONN7LGGmuw++67s/XWW3P33Xd3/Ryto03ahxGuueaaS77+5Cc/yRve8AauuOIKHnjgAXbfffcBn/eII47g7W9/O6NHj+aAAw5IG3xELCNt6G2eeOIJ1l9/fdZYYw3uvvtubrrpJp599lmuv/567r//foAlTS577bUXZ5999pLv7WtyeeUrX8ldd93F4sWLl9T0+3utTTbZBIBvfvObS8r32msvzj33XBYtWrTM62288cZsvPHGfPazn+WII44Yuh86ImohCb3NtGnTWLRoEa997Ws58cQT2XHHHRkzZgwzZsxg//33Z/LkyRx44IEAnHzyySxYsIAtt9ySyZMnc+211wJw+umn87a3vY2dd96ZjTbaqN/XOuGEEzjppJOYMmXKkuQNcPTRR7PpppsyadIkJk+ezEUXXbTk3CGHHMK4ceN47Wtfu5LuQESMVJVtQTd16lS3r4d+1113JVENYvr06UyZMoWjjjqq4/ncw4jO6jJsUdIc21M7nUsj7Aiy7bbbsuaaa3LmmWdWHUpE9KAk9BFk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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAF0CAYAAAAzY8JTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deZhdVZ3u8e9LAh2ZpzQXSCABsTVCQiCMcmlkUBAERFEQEAKIXkWxUREVUQFvI4oTF5WooIA0Mkg3KoigICqDBIwCAg1ClKC2AWIYDEOS9/6xdyWHyqmqE6iqfWrv9/M856H2cM751aHy1q619lpLtomIiJFvhaoLiIiIwZFAj4ioiQR6RERNJNAjImoigR4RURMJ9IiImkigR0TURAI9uo6kt0uaKekpSX+RdLWkncpjkyRdKWm+pCclXS9px5bnTpBkSb/p9ZrrSnpO0uyWfbPLfev2Ovc35WtMKLe/XZ73VMvjt73e76per3GhpE9JOqTlOQskLW59nfLcnSTdVH5Pj0v6laRtBvVDjUZIoEdXkXQ88CXg/wLrARsBXwX2k7Qp8CvgTmAisAFwBfATSTv0eqmVJW3esv124KE2b/kQcHDL+28BrNzmvDNsr9rymNLr+Hatv1h62P5uz3OAvYA/t76OpNWBHwJnAWsDGwKfBp5tU0NEvxLo0TUkrQGcArzX9vdtP237eds/sP1h4FPAzbY/bvtx20/a/gpwAfDZXi93AXB4y/Y7gPPbvO0F5bEeh/dx3kDOAD7zIp73CgDb/2F7ke0Ftn9i+3cv4rWi4RLo0U12AMZQXHW3swdwaZv9lwCvkfSyln0XAgdJGiVpErAqcGub594CrC7pVZJGAQeVz11eXwVeIWn35XzefwOLJH1H0l6S1noR7x0BJNCju6wDPGp7YR/H1wX+0mb/Xyh+ltdu2TcHuA/YneIK/IJ+3rfnKn0P4B7gkTbnfEjS31se3+l1fAHFFfpp/bzPMmw/AewEGPgGMLfsI1hveV4nAhLo0V0eA9aVNLqP448C67fZvz6wGJjXa//5wBEUbeQDBfrby3P7am75vO01Wx6Htznnm8B6kt7Yz3stw/Y9to+wPQ7YnKJv4EvL8xoRkECP7nIzRWfg/n0cvw44sM3+t1K0rf+j1/7Lgb2BB23/qa83tf1His7RNwDfX96iW17nOYoOzVMBvcjXuBf4NkWwRyyXBHp0DdvzgZOBsyXtL2llSSuWbctnUITljpI+I2ltSatJeh9Fc8lH2rze08CuwNEdvP1RwK7lc16KCyj6Afbs5GRJr5T0QUnjyu3xFH9R3PIS64gGSqBHV7F9JnA8cBIwF3gYOBb4T9v3U7Q3TwFmU7Sdvxl4ve1f9fF6M23/oYP3/YPtmf2cckKv+9Af7eN1FlH8Ulq73fE2ngS2A26V9DRFkN8FfLDD50csoSxwERFRD7lCj4ioiQR6RERNJNAjImoigR4RURMJ9IiImuhrRN6QW3fddT1hwoSq3j4iYkS6/fbbH7U9tt2xygJ9woQJzJzZ322/ERHRm6Q/9nUsTS4RETWRQI+IqIkEekRETVTWhh4R9fb8888zZ84cnnnmmapLGZHGjBnDuHHjWHHFFTt+TgI9IobEnDlzWG211ZgwYQLSi5pNuLFs89hjjzFnzhwmTpzY8fPS5BIRQ+KZZ55hnXXWSZi/CJJYZ511lvuvmwR6RAyZhPmL92I+uwR6RERNpA29Jiac+KOqS2D26XtXXUJ0scH+Ge2Wn7eFCxcyenR3RGmu0COitvbff3+23nprXv3qVzNjxgwAfvzjH7PVVlsxZcoUdtttNwCeeuoppk+fzhZbbMHkyZO5/PLLAVh11VWXvNZll13GEUccAcARRxzBu9/9brbbbjtOOOEEfv3rX7PDDjswdepUdtxxR+677z4AFi1axIc+9CE233xzJk+ezFlnncXPfvYz9t9/6bK51157LW9605sG5fvtjl8rERFD4Nxzz2XttddmwYIFbLPNNuy33368853v5MYbb2TixIk8/vjjAJx66qmsscYa3HnnnQDMmzdvwNeeM2cON910E6NGjeKJJ57gF7/4BaNHj+a6667jYx/7GJdffjkzZsxg9uzZzJo1i9GjR/P444+z1lpr8Z73vIe5c+cyduxYzjvvPI488shB+X4T6BFRW1/5yle44oorAHj44YeZMWMGO++885JbAddeu1j69brrruPiiy9e8ry11lprwNc+8MADGTVqFADz58/n8MMP5/7770cSzz///JLXffe7372kSabn/Q477DAuvPBCpk+fzs0338z5558/KN/viA70tBtHRF9uuOEGrrvuOm6++WZWXnlldtllF7bcckvuvffejl+j9U6T3rcQ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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAF0CAYAAAAzY8JTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3de5xddX3u8c9DAkUgQCKjR0hCAsZLhIRAuMqhIqJBKSCKgkC5o8dGUao0WEQL9lXUoigHlaigSBERpA0apaAgKhcJnCA3kRRQhmqNEG7KJYHn/LHWJDuTuezAzKw9az3v12u/Muu3FzPf2cw8s/Zv/S6yTUREjH7rVF1AREQMjQR6RERNJNAjImoigR4RURMJ9IiImkigR0TURAI9IqImxlZdQMRQk/Rky+EGwDPAc+Xxe4FpwCuBjwF3tZy7IfAXoGdyxj7AMUC37VP6+DrudT7AabY/MwTfRsRaS6BH7djeqOdjSQ8Ax9q+uqXtk+V5vwNazzUw0/aSlrZjBvlyq50fUaV0uURE1EQCPSKiJhLoES/OrZIebXm8peqCornShx7x4myfPvToFLlCj4ioiVyhRwxujKT1W46ft/1sZdVE9CNX6BGDmwc81fL4Sctzt0l6suVxViUVRgDKBhcREfWQK/SIiJpIoEdE1EQCPSKiJhLoERE1kUCPiKiJysahb7bZZp4yZUpVXz4iYlS65ZZb/mS7q6/nKgv0KVOmsGjRoqq+fETEqCTpt/09ly6XiIiaSKBHRNREAj0ioiayOFeMuOXLl9Pd3c3TTz9ddSmj0vrrr8/EiRNZd911qy4lOkwCPUZcd3c348aNY8qUKUiqupxRxTYPP/ww3d3dTJ06tepyosOkyyVG3NNPP81LX/rShPkLIImXvvSleXcTfUqgRyUS5i9cXrvoT1uBLmmOpHskLZE0r4/nPy9pcfn4jaRHh77UiIgYyKB96JLGAOcAewPdwM2SFti+q+cc2x9uOf8DwKxhqDVqasq8Hwzp53vgjLcN6ed7MVasWMHYsdXdqhrq1/aF6KT/H3XXzhX6TsAS2/eV225dDOw/wPmHAN8eiuIihtMBBxzADjvswOte9zrmz58PwI9+9CO23357Zs6cyV577QXAk08+yVFHHcW2227LjBkzuOyyywDYaKONVn6uSy+9lCOPPBKAI488kve9733svPPOnHTSSfzyl79k1113ZdasWey2227cc889ADz33HN85CMfYZtttmHGjBmcffbZ/OQnP+GAAw5Y+Xmvuuoq3v72t4/EyxE10M6lwxbAgy3H3cDOfZ0oaUtgKqtv0RXRkc477zwmTJjAU089xY477sj+++/Pcccdx3XXXcfUqVN55JFHADj99NPZZJNNuP322wFYtmzZoJ+7u7ub66+/njFjxvD444/zs5/9jLFjx3L11VfzsY99jMsuu4z58+fzwAMPsHjxYsaOHcsjjzzC+PHjef/738/SpUvp6uri/PPP5+ijjx7W1yHqY6jfCx4MXGr7ub6elHQ8cDzA5MmTh/hLR6ydL37xi1x++eUAPPjgg8yfP5899thj5XDACRMmAHD11Vdz8cUXr/zvxo8fP+jnPuiggxgzZgwAjz32GEcccQT33nsvkli+fPnKz/u+971vZZdMz9c7/PDDufDCCznqqKO44YYbuOCCC4boO466a6fL5SFgUsvxxLKtLwczQHeL7fm2Z9ue3dXV52JhESPi2muv5eqrr+aGG27gtttuY9asWWy33XZr9TlaR5v0Hka44YYbrvz44x//OHvuuSd33HEHV1xxxaBDDo866iguvPBCvv3tb3PQQQdV2gcfo0s7Pyk3A9MkTaUI8oOB9/Q+SdJrgPHADUNa4QBywydeqMcee4zx48ezwQYb8Otf/5obb7yRp59+muuuu477779/ZZfLhAkT2HvvvTnnnHM466yzgKLLZfz48bz85S/n7rvv5tWvfjWXX34548aN6/drbbHFFgB84xvfWNm+9957c+6557Lnnnuu7HKZMGECm2++OZtvvjmf+tSnuPrqq4f9tYj6GPQK3fYKYC5wJXA3cIntOyWdJmm/llMPBi627eEpNWLozJkzhxUrVvDa176WefPmscsuu9DV1cX8+fM58MADmTlzJu9+97sBOOWUU1i2bBnbbLMNM2fO5JprrgHgjDPOYN9992W33XbjFa94Rb9f66STTuLkk09m1qxZrFixYmX7sccey+TJk5kxYwYzZ87koosuWvncoYceyqRJk3jta187TK9A1JGqyt/Zs2f7xa6Hniv00enuu+9OUA1i7ty5zJo1i2OOOabP59t9DfM7Uj+SbrE9u6/n0jkX0WF22GEHNtxwQ84888yqS4lRJoEe0WFuueWW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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAF0CAYAAAAtqvLgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3de5hdVX3/8feHBIjcA6QWkkACxpYICZFw1SLKLVQFpCBYsBBQyk9RLFWEimBBn6JWa0tRiTUoUIpcpI01SoOAaLklwUgMkBIuyuAtJpGLBsjl8/tj70nOjDOZk2Qy+8w+n9fznGfOXnvvM9+zM/meddZaey3ZJiIi6muzqgOIiIhNK4k+IqLmkugjImouiT4iouaS6CMiai6JPiKi5pLoIyJqLok+2oqkpyUtl/SipGWSvi1pdMP+MyTNl/R7Sb+U9CVJOzTs/4SkFZJeKB//J+lfJe1S7r9e0jXdfuebJC3pPCZioCXRRzt6u+1tgF2AXwFXAkj6W+DTwEeA7YGDgN2BWZK2aDj/G7a3BXYE3gH8MTC3TOTnAcdIOrJ8zWHAV4C/tf2LgXhzEd0l0Ufbsv0ScAswXtJ2wN8DH7D9XdsrbD8NvBMYA5zWw/krbC8ATgYWUyTzJcAHgGmStgYuBZ6w/bUBeEsRPUqij7YlaSuKJH0/cAgwDPhm4zG2XwRmAkf29jq2VwH/BfxZuX0z8BDwH8DZ5SOiMkOrDiCiAv8paSWwNUVN/GhgIvAb2yt7OP4XwH59vObPKZpyOr0PeAL4mO1nNj7kiA2XGn20o+Nt70BRgz8X+D6wEthZUk+Vn12A3/TxmiOBpZ0btn9VnrOgXyKO2AhJ9NG2bK+y/U1gFbAl8DJwQuMxkrYBjgG+19vrSNoMeDvwg00XbcSGS6KPtqXCccBwYA5FZ+yVkqZI2lzSGOAmoAO4rofzh0rai6It/o+Bzw9U7BHrI2300Y6+JWkVYOCnwOnl6JkFkpYA/wjsCTwP/Cdwqu2XG84/WdLxgCja5mcB+9n++UC+iYhmKQuPRETUW5puIiJqLok+IqLmkugjImouiT4iouaS6CMiaq7lhlfuvPPOHjNmTNVhREQMKnPnzv2N7RE97Wu5RD9mzBjmzJlTdRgREYOKpJ/2ti9NNxERNZdEHxFRc0n0ERE113Jt9D1ZsWIFHR0dvPTSS1WHMmgNGzaMUaNGsfnmm1cdSkQMsEGR6Ds6Oth2220ZM2YMkqoOZ9CxzZIlS+jo6GDs2LFVhxMRA2xQNN289NJL7LTTTknyG0gSO+20U74RRbSpQZHogST5jZTrF9G+Bk2ij4iIDTMo2ui7G3Pht/v19Z6+4q39+nobY+XKlQwdOij/WSIGpf7OJxtqU+ah1OjXw/HHH89+++3H6173OqZNmwbAd7/7XV7/+tczceJEDj/8cABefPFFpk6dyj777MOECRO49dZbAdhmm23WvNYtt9zCGWecAcAZZ5zBOeecw4EHHsgFF1zAgw8+yMEHH8ykSZM45JBDWLhwIQCrVq3iwx/+MHvvvTcTJkzgyiuv5M477+T4449f87qzZs3iHe94x0BcjogYJFJ1XA/Tp09nxx13ZPny5ey///4cd9xxvPe97+Wee+5h7NixLF26FIDLL7+c7bffnvnz5wOwbNmyPl+7o6ODe++9lyFDhvD888/zgx/8gKFDh3LHHXfwd3/3d9x6661MmzaNp59+mnnz5jF06FCWLl3K8OHDed/73sfixYsZMWIE11xzDWeeeeYmvQ4RMbgk0a+Hf/mXf+G2224D4JlnnmHatGkceuiha4Ys7rjjjgDccccd3HjjjWvOGz58eJ+vfdJJJzFkyBAAnnvuOU4//XQef/xxJLFixYo1r3vOOeesadrp/H3vfve7uf7665k6dSr33Xcf1157bT+944iogyT6Jt19993ccccd3HfffWy11VYcdthh7Lvvvjz22GNNv0bjyJfuQx233nrrNc8//vGP8+Y3v5nbbruNp59+msMOO2ydrzt16lTe/va3M2zYME466aS08UdEF0210UuaImmhpEWSLlzHcX8hyZImN5RdVJ63UNLR/RF0FZ577jmGDx/OVlttxWOPPcb999/PSy+9xD333MNTTz0FsKbp5sgjj+Sqq65ac25n082rX/1qHn30UVavXr3mm0Fvv2vkyJEAfO1rX1tTfuSRR3L11VezcuXKLr9v1113Zdddd+WTn/wkU6dO7b83HRG10GeilzQEuAo4BhgPvEvS+B6O2xY4D3igoWw8cArwOmAK8MXy9QadKVOmsHLlSvbaay8uvPBCDjroIEaMGMG0adM44YQTmDhxIieffDIAF198McuWLWPvvfdm4sSJ3HXXXQBcccUVvO1t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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAF0CAYAAAAtqvLgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dfbxVZZ3+8c8lqOQzKtMvBQSLZkQFSXzMn1k+RGVqjqaljaJFTlmWU6aNaaP1GrOxJ39W0oSljuNjzlBhjqZmjk+AkeQDI6kpVpMBoRYqB67fH2sd2Od4Dmcjh7M2a1/v12u/zl73WmvzPZtzrr3Ove51L9kmIiLqa4OqC4iIiHUrQR8RUXMJ+oiImkvQR0TUXII+IqLmEvQRETWXoI+IqLkEfbQ9SZb0hm5tn5d0Zfn8AEkrJL0g6XlJ8yRN7us1IlpFgj6iOb+1vRmwBfBJ4DuS/rrimiKakqCPWAMuzAAWAeOqrieiGYOrLiBifSJpA+BQYFtgfsXlRDQlQR/RnO0k/Ql4DcXvzem2f1FxTRFNSddNBCwHNuzWtiGwrGH5t7a3ouij/wbwtgGqLWKtJegj4ClgVLe20cBvum9o+yXgM8Cuko5Y96VFrL0EfQRcA5wtabikDSQdBLwbuL6njW2/DFwEnNNt1UaShjQ8Bq3bsiOak6CPgPOAu4G7gMXAhcBxtn+1mn2mASMlvbuh7SFgacNjck87Rgw05cYjERH1liP6iIiaS9BHRNRcgj4iouYS9BERNZegj4iouZabAmHbbbf1qFGjqi4jImK9Mnv27D/aHtbTupYL+lGjRjFr1qyqy4iIWK9IesWV3J3SdRMRUXMJ+oiImkvQR0TUXMv10UdEvS1btowFCxbw4osvVl3KemnIkCEMHz6cDTfsPrN27xL0ETGgFixYwOabb86oUaOQVHU56xXbLFy4kAULFjB69Oim90vXTUQMqBdffJFtttkmIf8qSGKbbbZZ47+GEvQRMeAS8q/eq3nvEvQRETWXPvqaG3Xmj6suAYAnL3hX1SVEi+rvn9FW+lnr6Ohg8ODqYzZH9BHRlo444gh23313dt55Z6ZOnQrAT37yE970pjcxfvx4DjzwQABeeOEFJk+ezK677sq4ceO44YYbANhss81Wvtb111/PiSeeCMCJJ57IKaecwl577cUZZ5zB/fffzz777MOECRPYd999mTdvHgDLly/nU5/6FLvssgvjxo3j4osv5rbbbuOII1bdiviWW27hPe95z1p/r9V/1EREVGDatGlsvfXWLF26lD322IPDDz+cD33oQ9x5552MHj2aRYsWAXD++eez5ZZbMnfuXAAWL17c52svWLCAu+++m0GDBvHcc8/x85//nMGDB3Prrbfy2c9+lhtuuIGpU6fy5JNPMmfOHAYPHsyiRYsYOnQoH/nIR3j22WcZNmwYl112GSeddNJaf68J+ohoS9/4xje48cYbAXj66aeZOnUq+++//8phi1tvvTUAt956K1dfffXK/YYOHdrnax999NEMGlTcG37JkiWccMIJPPbYY0hi2bJlK1/3lFNOWdm10/nvfeADH+DKK69k8uTJ3HPPPVx++eVr/b0m6COi7dxxxx3ceuut3HPPPWyyySYccMAB7Lbbbjz66KNNv0bj6Jfuwx033XTTlc8/97nP8da3vpUbb7yRJ598kgMOOGC1rzt58mTe/e53M2TIEI4++uh+6eNPH31EtJ0lS5YwdOhQNtlkEx599FHuvfdeXnzxRe68806eeOIJgJVdNwcffDCXXHLJyn07u25e+9rX8sgjj7BixYqVfxn09m9tv/32AHzve99b2X7wwQdz6aWX0tHR0eXf22677dhuu+34whe+wOTJk/vl+03QR0TbmTRpEh0dHey0006ceeaZ7L333gwbNoypU6dy5JFHMn78eI455hgAzj77bBYvXswuu+zC+PHjuf322wG44IILOPTQQ9l333153ete1+u/dcYZZ3DWWWcxYcKElaEO8MEPfpCRI0cybtw4xo8fz1VXXbVy3XHHHceIESPYaaed+uX7le1+eaH+MnHiRGc++v6T4ZXRah555JF+C7C6OvXUU5kwYQInn3xyj+t7eg8lzbY9saft00cfEdFCdt99dzbddFMuuuiifnvNprpuJE2SNE/SfEln9rD+FElzJc2RdJeksQ3rzir3myfp7f1WeUREDc2ePZs777yTjTfeuN9es8+glzQIuAR4BzAWeF9jkJeusr2r7d2AC4GvlPuOBY4FdgYmAd8sXy8iIgZIM103ewLzbT8OIOlq4HDg4c4NbD/XsP2mQGfH/+HA1bZfAp6QNL98vXv6ofZepV86orXZzsRmr9KrOa/aTNfN9sDTDcsLyrYu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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "P9YLI05eVUkc"
      },
      "source": [
        "## Best Model \n",
        "By observing the above results I concluded that the model that gives the best result is `XGBClassifier` and the best feature for predicting flair is `combined_features`.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "TqJKtTZKk7yi",
        "outputId": "2174af21-18aa-45c9-ead9-042e98888e39"
      },
      "source": [
        "X = data['combined_features']\n",
        "y = data['flair']\n",
        "\n",
        "np.random.seed(21)\n",
        "\n",
        "X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2)\n",
        "model = Pipeline([('vect', CountVectorizer()),\n",
        "                   ('tfidf', TfidfTransformer()),\n",
        "                   ('clf', XGBClassifier())])\n",
        "model.fit(X_train,y_train)\n",
        "model_score = model.score(X_test,y_test)\n",
        "print(f'Model score : {model_score}')"
      ],
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Model score : 0.8565573770491803\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "5BCXC2cjYl2r"
      },
      "source": [
        "## Improving a model\n",
        "First prediction = baseline prediction First model = baseline model\n",
        "\n",
        "From data perspective:\n",
        "\n",
        "* Could we collect more data. (generally,the more data, the better)\n",
        "* Can we improve data? (adding more reliable features)\n",
        "\n",
        "From a model perspective:\n",
        "\n",
        "* Is there a better model we can use? (Refer - sklearn ml map)\n",
        "* Could we imporove our model? (Tuning Hyperparameters)\n",
        "Parameters vs HyperParameters\n",
        "\n",
        "Parameters :- model find these patterns\n",
        "* Hyperparameters :- settings on model we can adjust(potentially) to improve its ability to find patterns\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lBRWsrb6gU67"
      },
      "source": [
        "After going though the model documentation https://xgboost.readthedocs.io/en/latest/parameter.html and by experimenting \n",
        "I found that the best parameters are :\n",
        "n_estimators=1000, verbosity=1, seed=2, \n",
        "colsample_bytree=0.6, subsample=0.7,objective='multi:softmax'"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Bs_EN9WBQSBQ"
      },
      "source": [
        "X = data['combined_features']\n",
        "y = data['flair']\n",
        "\n",
        "X_train, X_test, y_train, y_test = train_test_split(X,y, test_size = 0.2, random_state = 21) \n",
        "model = Pipeline([('vect', CountVectorizer()),\n",
        "                   ('tfidf', TfidfTransformer()),\n",
        "                   ('clf', XGBClassifier(random_state=42,n_estimators=1000,verbosity=1, seed=2, \n",
        "                                         colsample_bytree=0.6, subsample=0.7,objective='multi:softmax'))])\n",
        "\n",
        "model.fit(X_train,y_train);"
      ],
      "execution_count": 13,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Zy7e-5J0-S8x",
        "outputId": "043cd13c-940f-4ee6-9d74-6535882e6039"
      },
      "source": [
        "model.score(X_test,y_test)"
      ],
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "0.860655737704918"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 14
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "dWnwWmqh-hoZ"
      },
      "source": [
        "## Evaluting our tuned machine learning classifier, beyond accuracy\n",
        "* ROC curve and AUC score\n",
        "* Confusion matrix\n",
        "* Classification report\n",
        "* Precision\n",
        "* Recall\n",
        "* F1-score\n",
        "... and it would be great if cross-validation was used where possible.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Zhb2U0Va_BEp"
      },
      "source": [
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.metrics import confusion_matrix, classification_report"
      ],
      "execution_count": 15,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "nykFWhnR-0Aw"
      },
      "source": [
        "To make comparisons and evaluate our trained model, first we need to make predictions."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "idNOZtec_g7q"
      },
      "source": [
        "y_preds = model.predict(X_test)"
      ],
      "execution_count": 16,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "resEuccP_5AF",
        "outputId": "d1e07e5d-b9f7-4aad-cd08-b819ee76b6d3"
      },
      "source": [
        "confusion_matrix(y_test,y_preds)"
      ],
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[18,  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,  2,  0],\n",
              "       [ 0, 16,  1,  0,  0,  0,  0,  1,  0,  0,  2,  0,  0],\n",
              "       [ 0,  0, 15,  0,  0,  1,  0,  0,  0,  1,  0,  0,  0],\n",
              "       [ 0,  0,  0, 20,  0,  0,  0,  0,  0,  0,  0,  0,  0],\n",
              "       [ 0,  1,  0,  0, 22,  1,  0,  1,  2,  0,  0,  0,  0],\n",
              "       [ 0,  0,  0,  0,  1, 16,  0,  1,  1,  0,  1,  0,  0],\n",
              "       [ 0,  0,  0,  0,  0,  0, 21,  0,  0,  0,  0,  0,  0],\n",
              "       [ 0,  0,  0,  1,  0,  0,  0, 20,  1,  0,  0,  0,  0],\n",
              "       [ 0,  0,  1,  1,  0,  0,  0,  2, 15,  0,  0,  1,  0],\n",
              "       [ 0,  1,  0,  0,  0,  0,  0,  0,  0, 14,  0,  0,  0],\n",
              "       [ 0,  0,  1,  0,  1,  0,  0,  0,  0,  0, 20,  0,  0],\n",
              "       [ 0,  1,  0,  0,  1,  0,  0,  0,  1,  1,  1, 10,  0],\n",
              "       [ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 17
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 352
        },
        "id": "6kCst-fo_76K",
        "outputId": "7eea8fe9-36cf-4ebe-f6ca-688b97fd2200"
      },
      "source": [
        "sns.set(font_scale=1.5)\n",
        "\n",
        "def plot_conf_mat(conf_mat):\n",
        "    '''\n",
        "    Plot Confusion matrix.\n",
        "    '''\n",
        "    \n",
        "    fig, ax = plt.subplots(figsize = (5,5))\n",
        "    \n",
        "    ax = sns.heatmap(conf_mat, annot =True,\n",
        "                     cbar = False)\n",
        "    plt.xlabel('True label')\n",
        "    plt.ylabel('Predicted label')\n",
        "    plt.show()\n",
        "conf_mat = confusion_matrix(y_test, y_preds)\n",
        "plot_conf_mat(conf_mat)"
      ],
      "execution_count": 18,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 360x360 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "FhNOeMDdchPZ",
        "outputId": "42c19cd3-35e6-4a51-e54c-e808639d3d91",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "print(classification_report(y_test, y_preds))"
      ],
      "execution_count": 19,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "                    precision    recall  f1-score   support\n",
            "\n",
            "               AMA       1.00      0.82      0.90        22\n",
            "          AskIndia       0.84      0.80      0.82        20\n",
            "  Business/Finance       0.83      0.88      0.86        17\n",
            "       Coronavirus       0.91      1.00      0.95        20\n",
            "              Food       0.88      0.81      0.85        27\n",
            "     Non-Political       0.89      0.80      0.84        20\n",
            "       Photography       1.00      1.00      1.00        21\n",
            "    Policy/Economy       0.77      0.91      0.83        22\n",
            "          Politics       0.75      0.75      0.75        20\n",
            "         Scheduled       0.82      0.93      0.87        15\n",
            "Science/Technology       0.83      0.91      0.87        22\n",
            "            Sports       0.77      0.67      0.71        15\n",
            "     [R]eddiquette       1.00      1.00      1.00         3\n",
            "\n",
            "          accuracy                           0.86       244\n",
            "         macro avg       0.87      0.87      0.87       244\n",
            "      weighted avg       0.86      0.86      0.86       244\n",
            "\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "OtgGPRQ8BraW"
      },
      "source": [
        "## Saving a Machine learning model\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qPkFAou2AMtU"
      },
      "source": [
        "import pickle\n",
        "\n",
        "pickle.dump(model,open('final_model.pkl -1','wb'))"
      ],
      "execution_count": 20,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "yWueauuggCqd"
      },
      "source": [
        "## Before deploying the model to webiste first let's check the prediction"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tZCPIT98jobQ"
      },
      "source": [
        "loading the model and all the files\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Y6VVS1_eXqlp"
      },
      "source": [
        "final_model = pickle.load(open('final_model.pkl -1','rb'))"
      ],
      "execution_count": 21,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TsmP7pxjkTFf",
        "outputId": "ba23f1d9-e9c2-4f3a-84fe-c61d4ba3fb1c",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "!pip install praw"
      ],
      "execution_count": 22,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Collecting praw\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/2c/15/4bcc44271afce0316c73cd2ed35f951f1363a07d4d5d5440ae5eb2baad78/praw-7.1.0-py3-none-any.whl (152kB)\n",
            "\r\u001b[K     |██▏                             | 10kB 17.7MB/s eta 0:00:01\r\u001b[K     |████▎                           | 20kB 18.5MB/s eta 0:00:01\r\u001b[K     |██████▌                         | 30kB 11.9MB/s eta 0:00:01\r\u001b[K     |████████▋                       | 40kB 8.9MB/s eta 0:00:01\r\u001b[K     |██████████▊                     | 51kB 4.4MB/s eta 0:00:01\r\u001b[K     |█████████████                   | 61kB 4.9MB/s eta 0:00:01\r\u001b[K     |███████████████                 | 71kB 5.1MB/s eta 0:00:01\r\u001b[K     |█████████████████▎              | 81kB 5.3MB/s eta 0:00:01\r\u001b[K     |███████████████████▍            | 92kB 5.0MB/s eta 0:00:01\r\u001b[K     |█████████████████████▌          | 102kB 5.5MB/s eta 0:00:01\r\u001b[K     |███████████████████████▊        | 112kB 5.5MB/s eta 0:00:01\r\u001b[K     |█████████████████████████▉      | 122kB 5.5MB/s eta 0:00:01\r\u001b[K     |████████████████████████████    | 133kB 5.5MB/s eta 0:00:01\r\u001b[K     |██████████████████████████████▏ | 143kB 5.5MB/s eta 0:00:01\r\u001b[K     |████████████████████████████████| 153kB 5.5MB/s \n",
            "\u001b[?25hCollecting update-checker>=0.17\n",
            "  Downloading https://files.pythonhosted.org/packages/0c/ba/8dd7fa5f0b1c6a8ac62f8f57f7e794160c1f86f31c6d0fb00f582372a3e4/update_checker-0.18.0-py3-none-any.whl\n",
            "Collecting prawcore<2.0,>=1.3.0\n",
            "  Downloading https://files.pythonhosted.org/packages/1d/40/b741437ce4c7b64f928513817b29c0a615efb66ab5e5e01f66fe92d2d95b/prawcore-1.5.0-py3-none-any.whl\n",
            "Collecting websocket-client>=0.54.0\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/4c/5f/f61b420143ed1c8dc69f9eaec5ff1ac36109d52c80de49d66e0c36c3dfdf/websocket_client-0.57.0-py2.py3-none-any.whl (200kB)\n",
            "\u001b[K     |████████████████████████████████| 204kB 36.5MB/s \n",
            "\u001b[?25hRequirement already satisfied: requests>=2.3.0 in /usr/local/lib/python3.6/dist-packages (from update-checker>=0.17->praw) (2.23.0)\n",
            "Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from websocket-client>=0.54.0->praw) (1.15.0)\n",
            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/dist-packages (from requests>=2.3.0->update-checker>=0.17->praw) (2020.11.8)\n",
            "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests>=2.3.0->update-checker>=0.17->praw) (3.0.4)\n",
            "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from requests>=2.3.0->update-checker>=0.17->praw) (1.24.3)\n",
            "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests>=2.3.0->update-checker>=0.17->praw) (2.10)\n",
            "Installing collected packages: update-checker, prawcore, websocket-client, praw\n",
            "Successfully installed praw-7.1.0 prawcore-1.5.0 update-checker-0.18.0 websocket-client-0.57.0\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0N7cQBTYkVjm",
        "outputId": "6401e5dd-33bc-45ec-c247-2ffa77f4aade",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "import praw\n",
        "import numpy as np \n",
        "import pandas as pd\n",
        "import re\n",
        "import nltk\n",
        "from nltk.corpus import stopwords\n",
        "import datetime as dt\n",
        "nltk.download('all')\n",
        "from bs4 import BeautifulSoup"
      ],
      "execution_count": 23,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[nltk_data] Downloading collection 'all'\n",
            "[nltk_data]    | \n",
            "[nltk_data]    | Downloading package abc to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/abc.zip.\n",
            "[nltk_data]    | Downloading package alpino to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/alpino.zip.\n",
            "[nltk_data]    | Downloading package biocreative_ppi to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/biocreative_ppi.zip.\n",
            "[nltk_data]    | Downloading package brown to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/brown.zip.\n",
            "[nltk_data]    | Downloading package brown_tei to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/brown_tei.zip.\n",
            "[nltk_data]    | Downloading package cess_cat to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/cess_cat.zip.\n",
            "[nltk_data]    | Downloading package cess_esp to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/cess_esp.zip.\n",
            "[nltk_data]    | Downloading package chat80 to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/chat80.zip.\n",
            "[nltk_data]    | Downloading package city_database to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/city_database.zip.\n",
            "[nltk_data]    | Downloading package cmudict to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/cmudict.zip.\n",
            "[nltk_data]    | Downloading package comparative_sentences to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/comparative_sentences.zip.\n",
            "[nltk_data]    | Downloading package comtrans to /root/nltk_data...\n",
            "[nltk_data]    | Downloading package conll2000 to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/conll2000.zip.\n",
            "[nltk_data]    | Downloading package conll2002 to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/conll2002.zip.\n",
            "[nltk_data]    | Downloading package conll2007 to /root/nltk_data...\n",
            "[nltk_data]    | Downloading package crubadan to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/crubadan.zip.\n",
            "[nltk_data]    | Downloading package dependency_treebank to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/dependency_treebank.zip.\n",
            "[nltk_data]    | Downloading package dolch to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/dolch.zip.\n",
            "[nltk_data]    | Downloading package europarl_raw to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/europarl_raw.zip.\n",
            "[nltk_data]    | Downloading package floresta to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/floresta.zip.\n",
            "[nltk_data]    | Downloading package framenet_v15 to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/framenet_v15.zip.\n",
            "[nltk_data]    | Downloading package framenet_v17 to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/framenet_v17.zip.\n",
            "[nltk_data]    | Downloading package gazetteers to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/gazetteers.zip.\n",
            "[nltk_data]    | Downloading package genesis to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/genesis.zip.\n",
            "[nltk_data]    | Downloading package gutenberg to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/gutenberg.zip.\n",
            "[nltk_data]    | Downloading package ieer to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/ieer.zip.\n",
            "[nltk_data]    | Downloading package inaugural to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/inaugural.zip.\n",
            "[nltk_data]    | Downloading package indian to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/indian.zip.\n",
            "[nltk_data]    | Downloading package jeita to /root/nltk_data...\n",
            "[nltk_data]    | Downloading package kimmo to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/kimmo.zip.\n",
            "[nltk_data]    | Downloading package knbc to /root/nltk_data...\n",
            "[nltk_data]    | Downloading package lin_thesaurus to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/lin_thesaurus.zip.\n",
            "[nltk_data]    | Downloading package mac_morpho to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/mac_morpho.zip.\n",
            "[nltk_data]    | Downloading package machado to /root/nltk_data...\n",
            "[nltk_data]    | Downloading package masc_tagged to /root/nltk_data...\n",
            "[nltk_data]    | Downloading package moses_sample to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping models/moses_sample.zip.\n",
            "[nltk_data]    | Downloading package movie_reviews to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/movie_reviews.zip.\n",
            "[nltk_data]    | Downloading package names to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/names.zip.\n",
            "[nltk_data]    | Downloading package nombank.1.0 to /root/nltk_data...\n",
            "[nltk_data]    | Downloading package nps_chat to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/nps_chat.zip.\n",
            "[nltk_data]    | Downloading package omw to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/omw.zip.\n",
            "[nltk_data]    | Downloading package opinion_lexicon to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/opinion_lexicon.zip.\n",
            "[nltk_data]    | Downloading package paradigms to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/paradigms.zip.\n",
            "[nltk_data]    | Downloading package pil to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/pil.zip.\n",
            "[nltk_data]    | Downloading package pl196x to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/pl196x.zip.\n",
            "[nltk_data]    | Downloading package ppattach to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/ppattach.zip.\n",
            "[nltk_data]    | Downloading package problem_reports to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/problem_reports.zip.\n",
            "[nltk_data]    | Downloading package propbank to /root/nltk_data...\n",
            "[nltk_data]    | Downloading package ptb to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/ptb.zip.\n",
            "[nltk_data]    | Downloading package product_reviews_1 to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/product_reviews_1.zip.\n",
            "[nltk_data]    | Downloading package product_reviews_2 to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/product_reviews_2.zip.\n",
            "[nltk_data]    | Downloading package pros_cons to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/pros_cons.zip.\n",
            "[nltk_data]    | Downloading package qc to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/qc.zip.\n",
            "[nltk_data]    | Downloading package reuters to /root/nltk_data...\n",
            "[nltk_data]    | Downloading package rte to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/rte.zip.\n",
            "[nltk_data]    | Downloading package semcor to /root/nltk_data...\n",
            "[nltk_data]    | Downloading package senseval to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/senseval.zip.\n",
            "[nltk_data]    | Downloading package sentiwordnet to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/sentiwordnet.zip.\n",
            "[nltk_data]    | Downloading package sentence_polarity to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/sentence_polarity.zip.\n",
            "[nltk_data]    | Downloading package shakespeare to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/shakespeare.zip.\n",
            "[nltk_data]    | Downloading package sinica_treebank to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/sinica_treebank.zip.\n",
            "[nltk_data]    | Downloading package smultron to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/smultron.zip.\n",
            "[nltk_data]    | Downloading package state_union to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/state_union.zip.\n",
            "[nltk_data]    | Downloading package stopwords to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/stopwords.zip.\n",
            "[nltk_data]    | Downloading package subjectivity to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/subjectivity.zip.\n",
            "[nltk_data]    | Downloading package swadesh to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/swadesh.zip.\n",
            "[nltk_data]    | Downloading package switchboard to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/switchboard.zip.\n",
            "[nltk_data]    | Downloading package timit to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/timit.zip.\n",
            "[nltk_data]    | Downloading package toolbox to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/toolbox.zip.\n",
            "[nltk_data]    | Downloading package treebank to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/treebank.zip.\n",
            "[nltk_data]    | Downloading package twitter_samples to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/twitter_samples.zip.\n",
            "[nltk_data]    | Downloading package udhr to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/udhr.zip.\n",
            "[nltk_data]    | Downloading package udhr2 to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/udhr2.zip.\n",
            "[nltk_data]    | Downloading package unicode_samples to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/unicode_samples.zip.\n",
            "[nltk_data]    | Downloading package universal_treebanks_v20 to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    | Downloading package verbnet to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/verbnet.zip.\n",
            "[nltk_data]    | Downloading package verbnet3 to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/verbnet3.zip.\n",
            "[nltk_data]    | Downloading package webtext to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/webtext.zip.\n",
            "[nltk_data]    | Downloading package wordnet to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/wordnet.zip.\n",
            "[nltk_data]    | Downloading package wordnet_ic to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/wordnet_ic.zip.\n",
            "[nltk_data]    | Downloading package words to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/words.zip.\n",
            "[nltk_data]    | Downloading package ycoe to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/ycoe.zip.\n",
            "[nltk_data]    | Downloading package rslp to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping stemmers/rslp.zip.\n",
            "[nltk_data]    | Downloading package maxent_treebank_pos_tagger to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping taggers/maxent_treebank_pos_tagger.zip.\n",
            "[nltk_data]    | Downloading package universal_tagset to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping taggers/universal_tagset.zip.\n",
            "[nltk_data]    | Downloading package maxent_ne_chunker to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping chunkers/maxent_ne_chunker.zip.\n",
            "[nltk_data]    | Downloading package punkt to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping tokenizers/punkt.zip.\n",
            "[nltk_data]    | Downloading package book_grammars to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping grammars/book_grammars.zip.\n",
            "[nltk_data]    | Downloading package sample_grammars to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping grammars/sample_grammars.zip.\n",
            "[nltk_data]    | Downloading package spanish_grammars to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping grammars/spanish_grammars.zip.\n",
            "[nltk_data]    | Downloading package basque_grammars to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping grammars/basque_grammars.zip.\n",
            "[nltk_data]    | Downloading package large_grammars to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping grammars/large_grammars.zip.\n",
            "[nltk_data]    | Downloading package tagsets to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping help/tagsets.zip.\n",
            "[nltk_data]    | Downloading package snowball_data to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    | Downloading package bllip_wsj_no_aux to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping models/bllip_wsj_no_aux.zip.\n",
            "[nltk_data]    | Downloading package word2vec_sample to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping models/word2vec_sample.zip.\n",
            "[nltk_data]    | Downloading package panlex_swadesh to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    | Downloading package mte_teip5 to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/mte_teip5.zip.\n",
            "[nltk_data]    | Downloading package averaged_perceptron_tagger to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping taggers/averaged_perceptron_tagger.zip.\n",
            "[nltk_data]    | Downloading package averaged_perceptron_tagger_ru to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping\n",
            "[nltk_data]    |       taggers/averaged_perceptron_tagger_ru.zip.\n",
            "[nltk_data]    | Downloading package perluniprops to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping misc/perluniprops.zip.\n",
            "[nltk_data]    | Downloading package nonbreaking_prefixes to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping corpora/nonbreaking_prefixes.zip.\n",
            "[nltk_data]    | Downloading package vader_lexicon to\n",
            "[nltk_data]    |     /root/nltk_data...\n",
            "[nltk_data]    | Downloading package porter_test to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping stemmers/porter_test.zip.\n",
            "[nltk_data]    | Downloading package wmt15_eval to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping models/wmt15_eval.zip.\n",
            "[nltk_data]    | Downloading package mwa_ppdb to /root/nltk_data...\n",
            "[nltk_data]    |   Unzipping misc/mwa_ppdb.zip.\n",
            "[nltk_data]    | \n",
            "[nltk_data]  Done downloading collection all\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "dII-2LoClnd0"
      },
      "source": [
        "model = final_model"
      ],
      "execution_count": 24,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bfVOBagol6Y2"
      },
      "source": [
        "reddit = praw.Reddit(client_id='KqCyLYQgMNwp4w', client_secret='cA9UCAPiVadgs4FTsnZ3RqJUR0hROw', user_agent='Flair-Detector', \n",
        "                     username='shubhigupta09', password='flair123')"
      ],
      "execution_count": 25,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Rm-FvfQ-mJB7"
      },
      "source": [
        "replace_by_space = re.compile('[/(){}\\[\\]\\|@,;]')\n",
        "bad_symbols = re.compile('[^0-9a-z #+_]')\n",
        "stopWords = set(stopwords.words('english'))\n",
        "def text_cleaning(text):\n",
        "   \n",
        "    text = BeautifulSoup(text, \"lxml\").text\n",
        "    text = text.lower()\n",
        "    text = replace_by_space.sub(' ', text)\n",
        "    text = bad_symbols.sub('', text)\n",
        "    text = ' '.join(word for word in text.split() if word not in stopWords)\n",
        "    return text\n",
        "\n",
        "def string(value):\n",
        "    return str(value)"
      ],
      "execution_count": 26,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4lMzs_TKmUJG"
      },
      "source": [
        "def prediction(url):\n",
        "\tsubmission = reddit.submission(url = url)\n",
        "\tdata = {}\n",
        "\tdata[\"title\"] =str(submission.title)\n",
        "\tdata[\"url\"] = str(submission.url)\n",
        "\tdata[\"body\"] = str(submission.selftext)\n",
        "\n",
        "\tsubmission.comments.replace_more(limit=None)\n",
        "\tcomment = ''\n",
        "\tcount = 0\n",
        "\tfor top_level_comment in submission.comments:\n",
        "\t\tcomment = comment + ' ' + top_level_comment.body\n",
        "\t\tcount+=1\n",
        "\t\tif(count > 10):\n",
        "\t\t \tbreak\n",
        "\t\t\n",
        "\tdata[\"comment\"] = str(comment)\n",
        "\n",
        "\tdata['title'] = text_cleaning(str(data['title']))\n",
        "\tdata['body'] = text_cleaning(str(data['body']))\n",
        "\tdata['comment'] = text_cleaning(str(data['comment']))\n",
        "    \n",
        "\tcombined_features = data[\"title\"] + data[\"comment\"] + data[\"body\"] + data[\"url\"]\n",
        "\n",
        "\treturn str(model.predict([combined_features]))[2:-2]"
      ],
      "execution_count": 27,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NljkK01rsm4a",
        "outputId": "ae5964d6-669c-49d8-a0c9-bf2e39c99d06",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        }
      },
      "source": [
        "prediction(\"https://www.reddit.com/r/india/comments/d1m9ld/iran_removes_antiindia_banners_from_pak_consulate/\")"
      ],
      "execution_count": 28,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            },
            "text/plain": [
              "'Sports'"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 28
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "UMaEieE2sn_-"
      },
      "source": [
        ""
      ],
      "execution_count": 28,
      "outputs": []
    }
  ]
}